1. Field of the Invention
The invention relates to computer buses, and more particularly to an apparatus and method of expanding the functionality of computer buses.
2. Background Description
An interface is typically needed where computer devices must transfer transactions and commands between one another, so that the transactions or commands of one device can be received and properly interrupted by the other device. An example of such an interface includes a Peripheral Connect Interface (“PCI”).
Peripheral Connect Interface is an industry standard system level bus interconnect protocol. A PCI bus allows peripheral devices like memory, video cards, printers, etc. to be functionally added to a computer system. The PCI bus also allows a peripheral using a proprietary system to communicate with the controlling computer using predefined industry standard commands or transactions. Examples of such transactions include memory read and write, interrupts, errors and other messages. Additionally, a PCI bus may send and receive both input/output (“IO ”) and memory instructions.
Because the function of such an interface is to allow two different devices to communicate with one another, the interface will frequently be designed to an industry standard specification. The industry standard specification specifies the type and format of the allowable inputs and outputs to and from the interface. Accordingly, any device which will interact through the interface must comply with the interface's specifications or protocols.
An example of such an industry standard specification for the PCI interface is PCI Express. A PCI Express interface provides a system level bus interconnect applied to a computer system with a processor having a processor specific local bus. The PCI Express interface may be used where most of any memory and system accesses occur and would also include a PCI host bridge that would allow the system to bridge from the proprietary system of the system bus to the industry standard PCI bus. The PCI bus would then allow the addition and interface of devices like memory, video cards, printers, etc., which would then interact with the processor specific local bus though the PCI bus.
Interfaces can be structured so that there is a hierarchy to the interfaces. Such multiple interfaces may be connected to one another in series or cascaded, or in parallel with one another. Where multiple interfaces are connected to one another, it is frequently necessary to specify a hierarchy of the interfaces. The hierarchy of the interfaces may, among other things, specify how a command, which is received by one of the interfaces, is passed to the other interfaces. In the example of the PCI standard, one PCI interface may have multiple PCI interfaces or buses cascaded underneath it. Thus, a predetermined protocol is required to determine the path that a command or transaction follows as it is passed between interfaces. Examples of commands or transactions that may be passed through or between an interface or interfaces includes interrupts, error messages, etc.
In addition to facilitating communication between a device or a peripheral and a computer system, an interface also may have the capability to allow a computer system to automatically detect and configure a device. Such detection and configuration is commonly referred to as “plug and play” and requires that the interface and the device be capable of sending and receiving commands to configure the computer and the device for operation. Such communication commands may include, for example, memory range, IO range, and number of interrupts. Such configuration commands are transmitted through configuration space. Accordingly, both the interface and the peripheral attached thereto are configured to send and receive commands through configuration space at start-up in order for the computer system to configure the device for use.
A configuration bus is a component of the interface to facilitate the transmission and reception of configuration commands in order to allow software to set-up a system to function with a peripheral and to adjust to hardware changes. Typically, a configuration space has a combination of read only registers which are configured to describe the device. The read only registers are located on the device and include information such as, for example, the type of the device, the class of the device, the manufacturer of the device and registers which define the system resources the device needs to operate. Additionally, the device may have registers that enable the device to generate messages such as an interrupt. Also, the appropriate software drivers may be determined by information in the registers. Thus, configuration space may have a set of predefined read only registers which generally describe the device, describe the required system resources, and registers containing information which enable the bus to begin communication with the device. Also, an interface may utilize configuration commands which are unique to it.